<%@ page pageEncoding="UTF-8" %>
<%@ page import="util.*" %>
<%@ page import="entidades.*" %>

<%@ page import="java.util.Map" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.GregorianCalendar" %>
<%@ page import="com.google.gson.Gson" %>

<%
String svc = request.getParameter("service");

if(svc != null)
    {
	String resultado = "";

	try{
		// El servicio 'ordenes' obtiene las órdenes de un ciclo.
		if(svc.compareTo("ordenes") == 0)
			{
			String id = request.getParameter("id");
			CicloNewlong ciclo = new CicloNewlong(id);

			if(ciclo.getId() != 0)
				{
				HashMap map = new HashMap();
				map.put("code", 0);
				map.put("ciclo", ciclo);
				map.put("cantidad", ciclo.getCapacidad());
				map.put("fechaInicio", ciclo.getFechaHoraInicioToString());
				map.put("fechaFin", ciclo.getFechaHoraFinToString());
				map.put("proporciones", EtapaNewlong.listarExt(ciclo.getId()));
				resultado = new Gson().toJson(map);
				}
			else
				{ resultado = Json.getErrorMsj("No existe ningun ciclo con id = " + id); }
			}

		// El servicio 'new' busca los valores por defecto para crear un ciclo.
		if(svc.compareTo("new") == 0)
			{
			int utecoId = Util.parseInt(request.getParameter("uteco"));
			GregorianCalendar fechaInicio = new GregorianCalendar();
			GregorianCalendar fechaFin = new GregorianCalendar();
			fechaInicio.setTime(CicloUteco.getUltimaFecha(utecoId));
			fechaFin.setTime(CicloUteco.getUltimaFecha(utecoId));
			fechaFin.add(GregorianCalendar.DATE, 7);
			
			HashMap map = new HashMap();
			map.put("code", 0);
			map.put("capacidad", Uteco.getCapacidad(utecoId, fechaInicio.getTime(), fechaFin.getTime()));
			map.put("numero", CicloUteco.getProximoNumero(utecoId));
			map.put("fecha_inicio", Util.format(fechaInicio.getTime(), "dd/MM/yyyy HH:mm"));
			map.put("fecha_fin", Util.format(fechaFin.getTime(), "dd/MM/yyyy HH:mm"));

			resultado = new Gson().toJson(map);
			}

		// El servicio 'capacidad' obtiene la capacidad de una Uteco entre dos fechas dadas.
		if(svc.compareTo("capacidad") == 0)
			{
			int utecoId = Util.parseInt(request.getParameter("uteco"));
			long metros = Util.parseLong(request.getParameter("metros"));
			Date fechaInicio = Util.parseDatetime(request.getParameter("fecha_inicio"));
			Date fechaFin = Util.parseDatetime(request.getParameter("fecha_fin"));
			
			HashMap map = new HashMap();
			map.put("code", 0);
			map.put("capacidad", Uteco.getCapacidad(utecoId, fechaInicio, fechaFin));
			map.put("fecha_fin_min", Util.format(Uteco.calcularFechaFin(utecoId, fechaInicio, metros), "dd/MM/yyyy HH:mm"));

			resultado = new Gson().toJson(map);
			}

		// El servicio 'delete' elimina un ciclo.
		if(svc.compareTo("delete") == 0)
			{
			CicloUteco.borrar(request.getParameter("id"));
			resultado = Json.getOkMsj();
			}
		
		}catch(Exception e)
			{ resultado = Json.getErrorMsj(e); }

	out.print(resultado);
    }
%>
